package com.mall.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;

import org.apache.commons.net.ftp.FTPClient;

public class FTPUtil {
	
	//得到ftp的ip,user 和pass
	private static String ftpIp = PropertiesUtil.getProperty("ftp.server.ip");
	private static String ftpUser = PropertiesUtil.getProperty("ftp.user");
	private static String ftpPass = PropertiesUtil.getProperty("ftp.pass");
	
	private String ip;
	private int port;
	private String user;
	private String pwd;
	private FTPClient ftpClient;
	public String getIp() {
		return ip;
	}
	public void setIp(String ip) {
		this.ip = ip;
	}
	public int getPort() {
		return port;
	}
	public void setPort(int port) {
		this.port = port;
	}
	public String getUser() {
		return user;
	}
	public void setUser(String user) {
		this.user = user;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public FTPClient getFtpClient() {
		return ftpClient;
	}
	public void setFtpClient(FTPClient ftpClient) {
		this.ftpClient = ftpClient;
	}
	
	public FTPUtil(String ip, int port, String user, String pwd) {
		this.ip = ip;
		this.port = port;
		this.user = user;
		this.pwd = pwd;
	}
	
	public static boolean uploadFile(List<File> fileList) throws IOException{
		FTPUtil ftpUtil = new FTPUtil(ftpIp, 21, ftpUser, ftpPass);
		//开始连接ftp服务器
		boolean result = ftpUtil.uploadFile("img",fileList);
		
		return result; 
	}
	
	private boolean uploadFile(String remotePath,List<File> fileList) throws IOException{
		
		boolean uploaded = true;
		FileInputStream fis = null;
		//连接ftp服务器
		if(connectServer(this.ip, this.port,this.user, this.pwd)){
			//连接上
			try {
				ftpClient.changeWorkingDirectory(remotePath); //设置上传目录
				ftpClient.setBufferSize(1024);  	    //设置缓冲区大小,不设置会很慢
				ftpClient.setControlEncoding("UTF-8");  //设置字符集
				ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); //设置文件格式为二进制文件,也是为了防止乱码
				ftpClient.enterLocalActiveMode();
				for (File file : fileList) {
					fis = new FileInputStream(file);
					ftpClient.storeFile(file.getName(), fis);   //上传文件
				}
			} catch (IOException e) {
				//日志
				uploaded = false;
				e.printStackTrace();
			}finally{
				fis.close();
				ftpClient.disconnect();
			}
			
		}
		return uploaded;
	}
	
	//连接ftp服务器
	public boolean connectServer(String ip,int port,String user, String pwd){
		
		boolean isSuccess = false;
		ftpClient = new FTPClient();
		try {
			ftpClient.connect(ip); 
			isSuccess = ftpClient.login(user, pwd);
		} catch (IOException e) {
			e.printStackTrace();
			//日志
		}
		return isSuccess;
	}
	
	
}
